Typical computer systems utilize disk drives for mass storage. A disk drive is usually coupled to a host controller that resides in a system logic device. The disk drive is coupled to the host controller via an interconnect. One such interconnect is an AT Attachment (ATA) interconnect. The host controller communicates with the disk drive over the ATA interconnect.
In prior computer systems, in order to program a disk drive to initiate a data transfer, a processor must perform a series of one byte write cycles (anywhere between 8 and 16) to the ATA interface. This programming operation can take a significant amount of time and keep the processor from performing other tasks.
One method for improving ATA device performance is command queuing. This prior type of queuing is software based. With this method, a processor programs a storage device with command information for a data transfer. The storage device then signals an interrupt when done processing the command. The processor, responding to the interrupt, then reads from the storage device to determine the status of the storage device and to know if the command has been processed. The storage device may indicate that it is ready to execute the programmed command, or it may indicate that it is not ready to execute the programmed command but it is ready to accept programming for an additional command, or the storage device may indicate that it is ready to execute a previously programmed command.
The processor is involved in delivering command programming information to the storage device, servicing the interrupts signaled by the storage device, and managing a command queue in system memory. These tasks take up a significant amount of processor time and overall system performance is negatively affected.